package sistema;

import java.io.Serializable;
import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class Tabela extends AbstractTableModel implements Serializable{
	private static final long serialVersionUID = 1L;
	private ArrayList<Object> linhas = null;
	private String[] colunas = null;
	
	public Tabela(ArrayList<Object> dados, String[] colunas){
		setLinhas(dados);
		setColunas(colunas);
	}
	/**
	 * Recupera um array de colunas
	 * @return
	 */
	public String[] getColunas(){
		return colunas;
	}
	/**
	 * Recupera um ArrayList de linhas
	 * @return
	 */
	public ArrayList<Object> getLinhas(){
		return linhas;
	}
	/**
	 * Altera o array de colunas
	 * @param col Novo array de colunas
	 */
	public void setColunas(String[] col){
		colunas = col;
	}
	/**
	 * altera o arraylist de linhas
	 * @param lin Novo array list de linhas
	 */
	public void setLinhas(ArrayList<Object> lin){
		linhas = lin;
	}

	/**
	 * Retorna o numero de colunas
	 */
	@Override
	public int getColumnCount() {
		return colunas.length;
	}

	/**
	 * Retorna o numero de linhas
	 */
	@Override
	public int getRowCount() {
		return linhas.size();
	}

	/**
	 * Obtem o valor da celula na linha e coluna
	 */
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		String[] linha = (String[])getLinhas().get(rowIndex);
		return linha[columnIndex];
	}
	
	/**
	 * Modifica um valor de uma celula em linha e coluna
	 */
	@Override
	public void setValueAt(Object obj, int row, int col) {
		String[] linha = (String[]) getLinhas().get(row);
		linha[col] = (String)obj;
		fireTableCellUpdated(row, col);		
	}
	
	/**
	 * Retorna o nome da coluna
	 */
	@Override
	public String getColumnName(int column) {
		return getColunas()[column];
	}
	
	
}
